#ifndef VECTORMOVE_H
#define VECTORMOVE_H

#include <assert.h>
#include "Types.h"

#define MAX_MOVE_NB 256

class VectorMove
{
private:
	Move _list[MAX_MOVE_NB];
	unsigned int _count;
public:
	VectorMove(void);
	~VectorMove(void);
	unsigned int size();
	Move get(unsigned int i);
	void swap(unsigned int i, unsigned int j);
	void clear();
	bool empty();
	void push_back(Move m);
};

inline unsigned int VectorMove::size(){
	return _count;
}

inline Move VectorMove::get(unsigned int i){
	return _list[i];
}

inline void VectorMove::swap(unsigned int i, unsigned int j){
	Move temp = _list[i];
	_list[i] = _list[j];
	_list[j] = temp;
}

inline void VectorMove::clear(){
	_count = 0;
}

inline bool VectorMove::empty(){
	return !_count;
}

inline void VectorMove::push_back(Move m){
	//assert(m!=MOVE_NONE);
	//assert(m!=MOVE_NULL);
	_list[_count++] = m;
}


#endif